ruby新手,我如何从url中获取文件扩展名:http://www.example.com/asdf123.gif此外,我将如何格式化此字符串,在C#中我会这样做:string.format("http://www.example.com/{0}.{1}",filename,extension); 最佳答案 使用File.extnameFile.extname("test.rb")#=>".rb"File.extname("a/b/d/test.rb")#=>".rb"File.extname("test")#=>""File.ex
我正在开发一个允许用户创建帐户的网站。创建用户时的属性之一是用户个人网站。当我尝试像这样使用用户网站时:生成的url是:http://0.0.0.0:3000/www.userswebsite.com我认为这是因为link_to的@user部分...但是我怎样才能让它链接到www.userwebsite.com? 最佳答案 如果协议(protocol)不存在,您可以在url前加上协议(protocol):moduleUrlHelperdefurl_with_protocol(url)/^http/i.match(url)?url:"
我有一个@bunch模型作为数组返回每个模型都有属性-commentable_id和commentable_type(多态关联)我想按可评论的方式对模型进行分组,但如果这样做的话@bunch.group_by(&:commentable)它还会从数据库中获取可评论的内容,这是不需要的。我可以做@bunch.group_by(&:commentable_id)但这会引起一些混淆,因为可能有几种类型的可评论模型有没有办法group_bycommentable_idANDcommentable_type? 最佳答案 为什么不这样做:@bu
我有一堆代码要看,现在是调试时间。由于我从来都不是Ruby调试器的粉丝,所以我正在寻找一种遍历代码并阅读它的方法。我想做的是获取定义加载类的文件的位置:Foo::Bar.create(:param)#howcanIknowfilelocationinruntime?对于更小、组织更好的项目,我将只搜索classBar但在这里这是不可能的,因为有许多名为Bar的类,并且,使更糟糕的是,其中一些在同一个命名空间下。我知道,等待发生是件麻烦事。注意:我使用的是Ruby1.8.7。 最佳答案 对于Methods和ProcsRuby1.9有一
我有一个对象数组,我需要按可以是整数或nil的位置属性对其进行排序,并且我需要具有nil位置的对象位于数组的末尾。现在,我可以强制位置返回一些值而不是nil,这样array.sort就不会失败,但是如果我使用0作为默认值,那么它会将这些对象放在排序的前面。做这种事情的最好方法是什么?我是否应该将nil值设置为一些“几乎”总是保证在末尾的高得离谱的数字?还是有其他方法可以使array.sort方法将nil属性对象放在数组的末尾?代码如下所示:classParentdefsorted_childrenchildren.sort{|a,b|a.positionb.position}enden
给定一个输入,例如,day='Monday'如何计算下一个天的日期?defdate_of_next(day)...end 最佳答案 require'date'defdate_of_next(day)date=Date.parse(day)delta=date>Date.today?0:7date+deltaendDate.today#=>#date_of_next"Monday"#=>#date_of_next"Sunday"#=># 关于Ruby代码获取下周一(或一周中的任何一天)的日
在Ruby中获取block返回true的第一个可枚举元素的最快方法是什么?例如:arr=[12,88,107,500]arr.select{|num|num>100}.first#=>107我不想像select那样遍历整个数组,因为我只需要第一个匹配项。我知道我可以做一个each并在成功时中断,但我认为有一个本地方法可以做到这一点;我只是没有在文档中找到它。 最佳答案 几个核心ruby类,包括Array和Hash包括Enumerable模块提供了许多有用的方法来处理这些枚举。此模块提供findordetectmethods这正是
如何在Ruby中发出带参数的HTTPGET请求?POSTing时很容易做到:require'net/http'require'uri'HTTP.post_formURI.parse('http://www.example.com/search.cgi'),{"q"=>"ruby","max"=>"50"}但我看不到使用'net/http'将GET参数作为散列传递的方法。 最佳答案 从版本1.9.2(我认为)开始,您实际上可以将参数作为散列传递给URI::encode_www_form像这样的方法:require'uri'uri=UR
我希望能够使用Ruby解析任何URL以获取没有www的域的主要部分(只是example.com) 最佳答案 请注意没有算法方法可以找到可以为特定顶级域注册域的最高级别(每个注册管理机构的政策不同),唯一的方法是创建所有顶级域的列表以及域可以注册的级别。这就是为什么PublicSuffixList存在。我是PublicSuffix的作者,一个将域分解为不同部分的Ruby库。举个例子require'uri/http'uri=URI.parse("http://toolbar.google.com")domain=PublicSuffix
纯粹出于好奇,有没有更优雅的方法来简单地获取字符串中第一个=符号之后的子字符串?以下工作回馈name=bob:string="option=name=bob"string[string.index('=')+1..-1]只是感觉不太像Ruby。这也有效:string.split('=',2)[1]同样,不是很优雅,特别是因为split正在做额外的不必要的工作。正则表达式是答案吗?对于在字符串中查找单个字符位置的简单性,我觉得这有点矫枉过正:string.match('=(.*)')[1]我不得不想象这是一个极其普遍的情况,不是有一个string.after('=')类型的方法吗?鉴于此